summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/uic/barcode/Decoder.java2
-rw-r--r--src/main/java/org/uic/barcode/staticFrame/StaticFrame.java5
-rw-r--r--src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java17
-rw-r--r--src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java8
-rw-r--r--src/test/java/org/uic/barcode/test/SecurityUtilsTest.java16
-rw-r--r--src/test/java/org/uic/barcode/test/StaticFrameBarcodeSignatureAlgorithmDetectionTest.java4
-rw-r--r--src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java12
-rw-r--r--src/test/java/org/uic/barcode/ticket/api/test/SecurityProviderTestV1.java5
8 files changed, 46 insertions, 23 deletions
diff --git a/src/main/java/org/uic/barcode/Decoder.java b/src/main/java/org/uic/barcode/Decoder.java
index 0878d8d..d9f20ff 100644
--- a/src/main/java/org/uic/barcode/Decoder.java
+++ b/src/main/java/org/uic/barcode/Decoder.java
@@ -23,6 +23,7 @@ import org.uic.barcode.staticFrame.ticketLayoutBarcode.TicketLayout;
import org.uic.barcode.ticket.EncodingFormatException;
import org.uic.barcode.ticket.UicRailTicketCoder;
import org.uic.barcode.ticket.api.spec.IUicRailTicket;
+import org.uic.barcode.utils.SecurityUtils;
/**
@@ -165,6 +166,7 @@ public class Decoder {
} else if (staticFrame != null) {
+ // guess the signature algorithm based on the signature size
if (staticFrame.verifyByAlgorithmOid(key,signingAlg, provider)) {
return Constants.LEVEL1_VALIDATION_OK;
} else {
diff --git a/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java b/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java
index bf97acb..a8d7651 100644
--- a/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java
+++ b/src/main/java/org/uic/barcode/staticFrame/StaticFrame.java
@@ -706,6 +706,11 @@ public class StaticFrame {
* @throws IOException
*/
public boolean verifyByAlgorithmOid(PublicKey key, String signingAlg, Provider prov) throws InvalidKeyException, NoSuchAlgorithmException, SignatureException, IllegalArgumentException, UnsupportedOperationException, IOException, EncodingFormatException {
+
+ if ((signingAlg == null || signingAlg.length() < 1) && this.getSignature() != null) {
+ signingAlg = SecurityUtils.getDsaAlgorithm(this.getSignature());
+ }
+
//find the algorithm name for the signature OID
String algo = null;
Service service = prov.getService("Signature",signingAlg);
diff --git a/src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java b/src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java
index c6a693f..07147bf 100644
--- a/src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java
+++ b/src/test/java/org/uic/barcode/test/DynamicContentCoderTest.java
@@ -2,6 +2,8 @@ package org.uic.barcode.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.TimeZone;
import org.junit.Before;
import org.junit.Test;
@@ -48,9 +50,10 @@ public class DynamicContentCoderTest {
g.setLongitude( 12345L);
g.setLatitude( 56789L);
content.setGeoCoordinate(g);
-
+
try {
- content.setTimeStamp(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.03.04-12:30" ));
+ //needs to be before 28.2. to keep the test stable in year with febuary 29.
+ content.setTimeStamp(new SimpleDateFormat( "yyyy.MM.dd-HH:mm" ).parse( "2021.02.04-12:30" ));
} catch (ParseException e2) {
//
}
@@ -69,18 +72,18 @@ public class DynamicContentCoderTest {
String encoding = UperEncoder.hexStringFromBytes(encodedBytes);
- String expectedEncoding = "7C170F0E12620F9437000230390300DDD504017A20C6D0C2D8D8CADCCECA40E6E8E4D2DCCE2F8F461D9B32EECF96FE5F1D32EEE7A77EEBFA72310282DA05E1A37EECA0507B409C30F3E60509B42F8F461D9B32EECF96FE5F1D32EEE7A77EEBFA72310282DA";
-
+ String expectedEncoding = "7C170F0E1262089437000230390300DDD504017A20C6D0C2D8D8CADCCECA40E6E8E4D2DCCE2F8F461D9B32EECF96FE5F1D32EEE7A77EEBFA72310282DA05E1A37EECA0507B409C30F3E60509B42F8F461D9B32EECF96FE5F1D32EEE7A77EEBFA72310282DA";
+
assert(expectedEncoding.equals(encoding));
}
@Test public void testDynamicContentDecoding() {
- String encoding = "7C170F0E12620F9437000230390300DDD504017A20C6D0C2D8D8CADCCECA40E6E8E4D2DCCE2F8F461D9B32EECF96FE5F1D32EEE7A77EEBFA72310282DA05E1A37EECA0507B409C30F3E60509B42F8F461D9B32EECF96FE5F1D32EEE7A77EEBFA72310282DA";
-
+
+ String encoding = "7C170F0E1262089437000230390300DDD504017A20C6D0C2D8D8CADCCECA40E6E8E4D2DCCE2F8F461D9B32EECF96FE5F1D32EEE7A77EEBFA72310282DA05E1A37EECA0507B409C30F3E60509B42F8F461D9B32EECF96FE5F1D32EEE7A77EEBFA72310282DA";
IUicDynamicContent content = DynamicContentCoder.decode(UperEncoder.bytesFromHexString(encoding));
-
+
assert("appID".equals(content.getAppId()));
diff --git a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java
index f5d0729..7d7f550 100644
--- a/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java
+++ b/src/test/java/org/uic/barcode/test/DynamicFrameDoubleSignatureBCelipticTest2.java
@@ -86,7 +86,7 @@ public class DynamicFrameDoubleSignatureBCelipticTest2 {
try {
enc.setLevel1Algs(signatureAlgorithmOID, keyPairAlgorithmOID);
enc.setLevel2Algs(signatureAlgorithmOID, keyPairAlgorithmOID,keyPairLevel2.getPublic());
- enc.signLevel1("1080", keyPairLevel1.getPrivate(), signatureAlgorithmOID, "1");
+ enc.signLevel1("1080", keyPairLevel1.getPrivate(), signatureAlgorithmOID, "1",provider);
} catch (Exception e) {
assert(false);
}
@@ -97,7 +97,7 @@ public class DynamicFrameDoubleSignatureBCelipticTest2 {
IData level2Data = Level2TestDataFactory.getLevel2SimpleTestData();
try {
enc.setLevel2Data(level2Data);
- enc.signLevel2(keyPairLevel2.getPrivate());
+ enc.signLevel2(keyPairLevel2.getPrivate(),provider);
} catch (Exception e) {
assert(false);
}
@@ -126,7 +126,7 @@ public class DynamicFrameDoubleSignatureBCelipticTest2 {
int signatureCheck = 0;
try {
- signatureCheck = dec.validateLevel1(keyPairLevel1.getPublic(), null);
+ signatureCheck = dec.validateLevel1(keyPairLevel1.getPublic(), null,provider);
} catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException | IllegalArgumentException
| UnsupportedOperationException | IOException | EncodingFormatException e) {
assert(false);
@@ -135,7 +135,7 @@ public class DynamicFrameDoubleSignatureBCelipticTest2 {
signatureCheck = 0;
try {
- signatureCheck = dec.validateLevel2();
+ signatureCheck = dec.validateLevel2(provider);
} catch (Exception e) {
assert(false);
}
diff --git a/src/test/java/org/uic/barcode/test/SecurityUtilsTest.java b/src/test/java/org/uic/barcode/test/SecurityUtilsTest.java
index e500523..eb7df67 100644
--- a/src/test/java/org/uic/barcode/test/SecurityUtilsTest.java
+++ b/src/test/java/org/uic/barcode/test/SecurityUtilsTest.java
@@ -14,6 +14,7 @@ import java.security.SignatureException;
import java.security.spec.ECGenParameterSpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.uic.barcode.dynamicFrame.Constants;
import org.uic.barcode.utils.AlgorithmNameResolver;
@@ -60,8 +61,11 @@ public class SecurityUtilsTest {
-
- @Test public void testFindPublicKeyProvider() {
+ // functions without an explicitly set provider have been deprecated in the library.
+ @Deprecated
+ @Test
+ @Ignore
+ public void testFindPublicKeyProvider() {
Provider p = null;
@@ -97,9 +101,11 @@ public class SecurityUtilsTest {
-
-
- @Test public void testFindSignatureAlgorithmProvider() {
+ // functions without an explicitly set provider have been deprecated in the library.
+ @Deprecated
+ @Test
+ @Ignore
+ public void testFindSignatureAlgorithmProvider() {
Provider p = null;
boolean canSign = false;
diff --git a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeSignatureAlgorithmDetectionTest.java b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeSignatureAlgorithmDetectionTest.java
index be3db95..d6c2b9c 100644
--- a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeSignatureAlgorithmDetectionTest.java
+++ b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeSignatureAlgorithmDetectionTest.java
@@ -132,7 +132,7 @@ public class StaticFrameBarcodeSignatureAlgorithmDetectionTest {
int signatureCheck = 0;
try {
- signatureCheck = dec.validateLevel1(keyPair.getPublic());
+ signatureCheck = dec.validateLevel1(keyPair.getPublic(),null,prov);
} catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException | IllegalArgumentException
| UnsupportedOperationException | IOException | EncodingFormatException e) {
assert(false);
@@ -298,7 +298,7 @@ public class StaticFrameBarcodeSignatureAlgorithmDetectionTest {
int signatureCheck = 0;
try {
- signatureCheck = dec.validateLevel1(keyPair.getPublic());
+ signatureCheck = dec.validateLevel1(keyPair.getPublic(),null,prov);
} catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException | IllegalArgumentException
| UnsupportedOperationException | IOException | EncodingFormatException e) {
assert(false);
diff --git a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java
index b519308..1d8de54 100644
--- a/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java
+++ b/src/test/java/org/uic/barcode/test/StaticFrameBarcodeTestFCB3.java
@@ -7,6 +7,7 @@ import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
+import java.security.Provider;
import java.security.SecureRandom;
import java.security.Security;
import java.security.SignatureException;
@@ -43,6 +44,8 @@ public class StaticFrameBarcodeTestFCB3 {
public TicketLayout testLayout = null;
+ public Provider provider = null;
+
/**
* Initialize.
@@ -61,7 +64,8 @@ public class StaticFrameBarcodeTestFCB3 {
testFCBticket = SimpleUICTestTicket.getUicTestTicket();
testLayout = SimpleTestTicketLayout.getSimpleTestTicketLayout();
- Security.addProvider(new BouncyCastleProvider());
+ provider = new BouncyCastleProvider();
+ Security.addProvider(provider);
try {
keyPair = generateDSAKeys(keySize);
@@ -96,7 +100,7 @@ public class StaticFrameBarcodeTestFCB3 {
assert(enc != null);
try {
- enc.signLevel1("1080", keyPair.getPrivate(), algorithmOID, "1");
+ enc.signLevel1("1080", keyPair.getPrivate(), algorithmOID, "1",provider);
} catch (Exception e) {
assert(false);
}
@@ -136,7 +140,7 @@ public class StaticFrameBarcodeTestFCB3 {
assert(enc != null);
try {
- enc.signLevel1("1080", keyPair.getPrivate(), algorithmOID, "1");
+ enc.signLevel1("1080", keyPair.getPrivate(), algorithmOID, "1",provider);
} catch (Exception e) {
assert(false);
}
@@ -165,7 +169,7 @@ public class StaticFrameBarcodeTestFCB3 {
int signatureCheck = 0;
try {
- signatureCheck = dec.validateLevel1(keyPair.getPublic(),algorithmOID);
+ signatureCheck = dec.validateLevel1(keyPair.getPublic(),algorithmOID,provider);
} catch (InvalidKeyException | NoSuchAlgorithmException | SignatureException | IllegalArgumentException
| UnsupportedOperationException | IOException | EncodingFormatException e) {
assert(false);
diff --git a/src/test/java/org/uic/barcode/ticket/api/test/SecurityProviderTestV1.java b/src/test/java/org/uic/barcode/ticket/api/test/SecurityProviderTestV1.java
index 8318467..240907c 100644
--- a/src/test/java/org/uic/barcode/ticket/api/test/SecurityProviderTestV1.java
+++ b/src/test/java/org/uic/barcode/ticket/api/test/SecurityProviderTestV1.java
@@ -1,5 +1,6 @@
package org.uic.barcode.ticket.api.test;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
@@ -10,6 +11,8 @@ import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.Security;
import java.security.SignatureException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
import java.util.zip.DataFormatException;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
@@ -73,7 +76,7 @@ public class SecurityProviderTestV1 {
}
assert(keyPair != null);
-
+
}